A non-volatile memory such as a flash memory includes a data storage region formed of a plurality of memory cells. The memory cell has a transistor structure including a charge storage layer, and changes the threshold voltage of the memory cell by making the amount of the charge in the charge storage layer variable to store the data.
The charge is implanted into the charge storage layer or is withdrawn there from by applying a predetermined stress to respective terminals of the gate/source/drain of the memory cell transistor. When the data are written into the memory cell, the stress application and the verification operation are repeatedly performed to increase the threshold voltage stepwise for the purpose of preventing the over-programming to the memory cell.
However, as the data rewriting frequency is increased, the charge implantation to the charge storage layer becomes difficult owing to deterioration in the memory cell, and accordingly, the time for writing data becomes longer.